from django.shortcuts import render,redirect,HttpResponse
from app02 import models         #引入表
from django import forms
from app02.utils.pegination import Pegination
from app02.utils.bootrsap import  BootrsapModelForm

#用户管理
def user_list(request):
    #用户列表
    #获取数据库用户信息
    date_list=models.UserInfo.objects.all()
    #分页
    page_object=Pegination(request,date_list,page_size=4)
    coxtent={
        "date_list":page_object.page_mun,
        'page_string':page_object.html(),
         }
    #模版语言中不能加括号
    # print(date_list)
    #create_time.strftime("%Y-%m-%d")  #将datetime类型 转换为字符串
    #deprat_id  字段值
    #deprat.title  根据id自动去关联表中获取哪一行的deprat的对象.

    return render(request,'user_list.html',coxtent)

def user_add(request):
    #添加用户(原始用法)
    if request.method=='GET':
        content = {
            'gender_choices': models.UserInfo.gender_choices,
            'depart_list': models.Deancte.objects.all()
        }

        return render( request, 'user_add.html', content )
    else:
        #post请求 获取用户提交的信息
        user=request.POST.get('name')
        pwd=request.POST.get('pwd')
        age=request.POST.get('age')
        account=request.POST.get('act')
        create_time=request.POST.get('time')
        gender=request.POST.get('gb')
        depart_dp=request.POST.get('dp')
        #将用户信息保存到数据库
        models.UserInfo.objects.create(name=user,password=pwd,age=age,account=account,create_time=create_time,gender=gender,deprat_id=depart_dp)

        #返回用户列表
        return redirect('/user/list/')


def user_delete(request):
    # 删除用户
    # 获取id
    nid = request.GET.get('nid')
    # 删除信息
    models.UserInfo.objects.filter(id=nid).delete()

    # 重定向用户列表
    return redirect( '/user/list/' )

def user_edit(request,nid):
    # 修改用户

    # 当用户发送的请求是一个get的时候，执行if语句里面的函数
    if request.method == 'GET':
        # 根据nid,获取id [对象，对象]
        content = {
            'gender_choices': models.UserInfo.gender_choices,
            'depart_list': models.Deancte.objects.all(),
           'end':models.UserInfo.objects.filter( id=nid ).all()
        }

        return render( request,"user_edit.html",content)
    else:
        # 当用户提交的请求是一个post请求时，获取用户提交的信息
        user = request.POST.get( 'name' )
        pwd = request.POST.get( 'pwd' )
        age = request.POST.get( 'age' )
        account = request.POST.get( 'act' )
        create_time = request.POST.get( 'time' )
        gender = request.POST.get( 'gb' )
        depart_dp = request.POST.get( 'dp' )
        # 编辑 更新用户提交的标题
        models.UserInfo.objects.filter(id=nid).update(name=user,password=pwd,age=age,account=account,create_time=create_time,gender=gender,deprat_id=depart_dp)
    #     # 返回用户列表页面
        return redirect( '/user/list/' )

#####################ModelForm 新建用户  #####################
class UserModelForm(BootrsapModelForm):
    # 设置输入用户名不能小于2个字符
    name=forms.CharField(min_length=2,label='用户名')
    class Meta:
        # 关联表
        model=models.UserInfo
        fields=['name','password','age','account','create_time','gender','deprat']

def user_model_form_add(request):
    #新建用户（ModelForm版本）
    if request.method=='GET':
        # 使用ModelForm
        form=UserModelForm()
        return render(request,'user_model_form_add.html',{'form':form})
    #当用户提交post请求的时候 获取用户提交信息
    else:
        #接收数据data=request.POST
        form=UserModelForm(data=request.POST)
        #验证表单
        if form.is_valid():
            #自动保存到数据库的表当中
            form.save()
            return redirect('/user/list/')
        #验证失败 在页面上显示错误提示
        return  render(request,'user_model_form_add.html',{'form':form})


#编辑用户（ModelForm版本）  将id传过来 根据id来获取对应数据库哪一行的数据
def user_model_edit(request,nid):
    #编辑用户
    if request.method=='GET':
        # 根据id 在数据库中找到对应哪一行数据
        row_object = models.UserInfo.objects.filter( id=nid ).first()
        # 将表中的每一列传给页面  在前端页面生成对应的排版
        form = UserModelForm( instance=row_object )

        return render( request, 'user_model_edit.html', {'form': form} )
    else:
        #post请求
        row_object = models.UserInfo.objects.filter( id=nid ).first()
        #将用户提交的数据更新到当前行（instance=row_object）
        form=UserModelForm(data=request.POST,instance=row_object)
        if form.is_valid():
            #自动提交到数据库
            form.save()
            return redirect('/user/list')
        else:
            #验证失败  返回页面提示
            return render(request,'user_model_edit.html', {'form': form} )

